/**
 * 
 * 通用AjaxRequests对象
 */

var net = Object(); // 定义一个全局的变量
// 编写构造函数
net.AjaxRequest = function(url, onload, onerror, method, params) {
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror : this.defaultError;
	this.loadDate(url, method, params);
}

// 编写用户初始化xmlHttpRequest对象，并指定处理函数，最后发送http请求的方法
net.AjaxRequest.prototype.loadDate = function(url, method, params)
{
	if (!method) {
		method = "GET"; // 设置默认请求为get
	}
	if (window.XMLHttpRequest) { // 非ie浏览器创建
		this.req = new XMLHttpRequest;
	} else if (window.ActiveXObject) { // ie浏览器
		this.req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (this.req) {
		try {
			var loader = this;
			this.req.onreadystatechange = function() {
				net.AjaxRquest.onReadyState.call(loader);
			}
			this.req.open(method, url, true); // 建立对服务器的调用
			if (method == "POST") {// 如果提交方式是post
				this.req.setRequestHeader("Content-Type",
						"application/x-www.form-urlencodeed"); // 设置请求的内容类型
				this.req.setRequestHeader("x-requested-with", "ajax");// 设置请求的发出者
			}
			this.req.send(params); // 发送请求
		} catch (err) {
			this.onerror.call(this); // 调用错误的处理函数
		}
	}
}

// 重构回调函数
net.AjaxRequest.onReadyState = function() {
	var req = this.req;
	var ready = req.readyState; // 获取请求状态
	if (ready == 4) { // 请求完成
		if (req.status == 200) {
			this.onload.call(this); // 请求成功
		} else {
			this.error.call(this); // 调用错误处理函数
		}
	}
}

// 重构的默认处理函数
net.AjaxRequest.prototype.defaultError = function() {
	alert("错误数据\n\n 回调状态：" + this.req.readyState + "\n状态：" + this.req.status);
}